package com.fruit.logistics.yunda.pojo.order;

import com.joe.utils.parse.xml.XmlNode;
import lombok.Data;

import java.math.BigDecimal;
import java.util.List;

/**
 * 韵达订单号
 *
 * @author joe
 * @version 2018.05.14 10:14
 */
@Data
public class YDOrder {
    /*不可为空项*/
    /**
     * 订单唯一序列号（可以是订单号，可以是序列号，必须保证唯一）
     */
    @XmlNode(name = "order_serial_no")
    private String orderSerialNo;
    /**
     * 大客户系统订单的订单号
     */
    private String khddh;
    /**
     * 发件人
     */
    private UserInfo sender;
    /**
     * 收件人
     */
    private UserInfo receiver;
    /**
     * 商品信息
     */
    @XmlNode(arrayRoot = "item", general = Item.class)
    private List<Item> items;





    /*可为空项*/
    /**
     * 内部参考号，供大客户自己使用，可 以是客户的客户编号
     */
    private String nbckh;
    /**
     * 物品重量，精确到小数点后三位
     */
    private BigDecimal weight;
    /**
     * 尺寸，格式（长,宽,高）,单位 cm
     */
    private String size;
    /**
     * 货物金额，精确到小数点后两位
     */
    private BigDecimal value;
    /**
     * 代收货款金额（目前仅用于 cod 订单， cod 订单必填），精确到小数点后两位
     */
    @XmlNode(name = "collection_value")
    private BigDecimal collectionValue;
    /**
     * 商品性质(保留字段，暂时不用)
     */
    private byte special;
    /**
     * 订单备注
     */
    private String remark;
    /**
     * 可以自定义显示信息 1，打印在客户自 定义区域 1，换行请用\n
     */
    @XmlNode(name = "cus_area1")
    private String cusArea1;
    /**
     * 可以自定义显示信息 2，打印在客户自 定义区域 2，换行请用\n
     */
    @XmlNode(name = "cus_area2")
    private String cusarea2;
    /**
     * 接口异步回传的时候返回的 ID，客户 方系统使用，此 ID 是客户需求，可以 不填，默认为空
     */
    @XmlNode(name = "callback_id")
    private String callbackId;
    /**
     * 客户自定义条码，支持字母和数字， 韵达系统会根据内容生成一维条码 显示在自定义区域
     */
    @XmlNode(name = "cus_area3")
    private String cusArea3;
    /**
     * 客户波次号，按照此号进行批量打印 校验
     */
    @XmlNode(name = "wave_no")
    private String waveNo;
    /**
     * 人工强制下单(系统筛单不送达的情 况下,会验证此标签,为 1 的话会强制 标记为可送达，使用此参数需要和网 点协商，否则不要使用此参数)
     */
    @XmlNode(name = "receiver_force")
    private byte receiverForce;
    /**
     * 运单类型，为空时默认为common（从系统订单的expressType字段取）
     * <p>
     * <li>common:普通</li>
     * <li>support_value:保价</li>
     * <li>cod:COD</li>
     * <li>df:到付</li>
     * <li>inner:内件</li>
     */
    @XmlNode(name = "order_type")
    private String orderType;
}
